package com.softeem.music_sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.softeem.music_sys.comm.Result;
import com.softeem.music_sys.entity.PlaylistMusic;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
* @author RD
* @description 针对表【playlist_music(歌单包含的音乐关系表)】的数据库操作Service
* @createDate 2025-11-07 11:19:17
*/
public interface PlaylistMusicService extends IService<PlaylistMusic> {

    /**
     * 添加音乐到歌单
     */
    Result addMusicToPlaylist(PlaylistMusic playlistMusic);

    /**
     * 从歌单移除音乐
     */
    Result removeMusicFromPlaylist(Integer playlistId, Integer musicId);

    /**
     * 删除歌单音乐关系记录
     */
    Result deletePlaylistMusic(Integer id);

    /**
     * 根据歌单ID获取音乐列表
     */
    Page<PlaylistMusic> getMusicsByPlaylist(Integer playlistId, Integer page, Integer limit);

    /**
     * 根据音乐ID获取所在歌单
     */
    Page<PlaylistMusic> getPlaylistsByMusic(Integer musicId, Integer page, Integer limit);

    /**
     * 批量添加音乐到歌单
     */
    Result batchAddMusicToPlaylist(Integer playlistId, List<Integer> musicIds);

    /**
     * 清空歌单
     */
    Result clearPlaylist(Integer playlistId);

    /**
     * 检查音乐是否在歌单中
     */
    boolean isMusicInPlaylist(Integer playlistId, Integer musicId);

    /**
     * 获取歌单音乐数量
     */
    long countMusicInPlaylist(Integer playlistId);
}